#ifndef QxSampleModuleFactory_HPP
#define QxSampleModuleFactory_HPP

#include <Base/QxAbstractFactory.hpp>
#include <Base/QxAbstractPlugin.hpp>

#include <QStringList>

class QxAbstractPlugin;

class QxSampleModuleFactory : public QxAbstractFactory
{
  Q_OBJECT;

public:

  static const QxSampleModuleFactory& instance();
  ~QxSampleModuleFactory();

  virtual QString description() const;

  QStringList pluginNameList() const;

  const QList<QxAbstractPlugin*>& plugins() const;
  QxAbstractPlugin* findPluginByName( const QString& ) const;

private:

  QxSampleModuleFactory();

private:

  class QxSampleModuleFactoryPrivate;
  QScopedPointer<QxSampleModuleFactoryPrivate>         _pd;
};

#endif // QxSampleModuleFactory_HPP
